﻿<?php
/**
* @version		$Id: view.html.php 9764 2007-12-30 07:48:11Z ircmaxell $
* @package		Joomla
* @subpackage	Poll
* @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
* @license		GNU/GPL, see LICENSE.php
* Joomla! is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/


// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die();

jimport( 'joomla.application.component.view');

class amapViewadvoirdistrib extends JView
{
	var $amap;

	function display($tpl = null)
	{
		if($this->amap->adLoggue)
		{

	$mainframe =& JFactory::getApplication();	
			$database =& JFactory::getDBO();
			$document =& JFactory::getDocument();
			$pathway  =& $mainframe->getPathway();

			// Adds parameter handling
			$params = $mainframe->getParams();
			
			// infos abonnement
			$abonnement = $mainframe->getUserState("amap_abonnement", NULL);

			// date distrib
			$date = JRequest::getVar('distrib', '');
			
			// traitement du parametre date lorsqu'il vaut "next" 
			if ($date == "next") {
				$this->amap->loadDistrib();
				$date = $this->amap->listeDistrib->surlignage;
			}
			
			//Set page title information
			$document->setTitle('Distribution du '.fdate($date));

			//Set pathway information
			$pathway->addItem($abonnement['Nom'], 'index.php?option=com_amap&amp;view=advoirabo&amp;abo='.$abonnement['Nom']);
			$pathway->addItem('Distribution du '.fdate($date), '');
			
			$params->def( 'show_page_title', 1 );
			$params->def( 'page_title', 'Abonnement');

			echo "<p>Distribution du <b>".fdate($date)."</b> pour l'abonnement <b>".$abonnement["Nom"]."</b></p><br/>";

			if($date != '' && JRequest::getVar('abo', '') != '' && $abonnement != NULL){
				// pour vérifier que la distribution sélectionné n'est pas antérieur à la premiere distribution de l'adhérent
				$tmp = $this->amap->aboadherent['PremiereDistribution'];
			
				// détermine si l'abonnement de l'adhérent est valide
				$aboEstSouscrit = ($this->amap->aboEstSouscrit() && $date >= $tmp);
			
				// détermine si le panier de l'adhrent est orphelin
				$panierAdOrph = $this->amap->estOrphelin($date);
				
				// détermine si le panier de l'adhérent est reporté et renvoie la date si c'est le cas sinon NULL
				$dateReport = $this->amap->estReporte($date);

				// calcul le dernier délai pour accéder à une distribution
				$tmp = strtotime($date." ".$abonnement['Delai']);
	
				$nbJours = $abonnement['JoursPreparation']; // nombre de jours de préparation avant la date de distribution
				$dernierDelai = $tmp - NB_SEC_JOUR * $nbJours; // on prend la date de la distribution et on retire le nombre de jour de préparation

				// par défaut on suppose qu'on ne peut pas agir sur la distribution
				$lectureSeule = TRUE;

				echo '<div class="amap_bloc">';
				echo '<h3 class="amap_titre">Mon statut</h3>';

				if(!$panierAdOrph && $dateReport == NULL){
					echo 'Vous avez <strong>'.$this->amap->nbPaniers($date).'</strong> panier(s) à venir chercher ce jour là.';
				}

				// Vérifie qu'on a pas dépasser le dernier délai pouragir sur la distribution
				if(time() < $dernierDelai){

					// on n'a pas dépassé le dernier délai donc on peut agir sur la distribution
					$lectureSeule = FALSE;
				
					// charge le statut de l'adhérent relatif à la distribution
					$statut = $this->amap->adStatutDistrib($date);

					if(!$panierAdOrph){
						// gestion des statuts
						switch($statut){
							case 'Inscrit':
								echo '<p>Vous faite parti de <strong>l\'équipe de distribution</strong>. <a class="amap_bouton" href="index.php?option=com_amap&amp;task=adInscDistr&amp;statut=Abandonne&amp;distrib='.$date.'">Se désinscrire</a></p>';
							break;
							case 'Abandonne':
								echo '<p>Vous avez <strong>abandonné</strong> votre place dans l\'équipe de distribution . <a class="amap_bouton" href="index.php?option=com_amap&amp;task=adInscDistr&amp;statut=Inscrit&amp;distrib='.$date.'">Revenir dans l\'équipe de distribution</a></p>';
							break;
							case 'Chef d\'équipe':
								echo '<p>Vous êtes le <strong>responsable</strong> de l\'équipe de distribution. <a class="amap_bouton" href="index.php?option=com_amap&amp;task=adInscDistr&amp;statut=Abandonne&amp;distrib='.$date.'">Se désinscrire</a></p>';
							break;
							case NULL:
								echo '<p>Vous ne faite pas parti <strong>l\'équipe de distribution</strong>. <a class="amap_bouton" href="index.php?option=com_amap&amp;task=adInscDistr&amp;statut=Inscrit&amp;distrib='.$date.'">S\'inscrire dans l\'équipe</a> <a class="amap_bouton" href="index.php?option=com_amap&amp;task=adInscDistr&amp;statut=Chef&amp;distrib='.$date.'">S\'inscrire en tant que chef d\'équipe</a></p>';
							break;
						}
					}
				} else {
					message("La distribution sélectionné s'est déjà déroulé.");
				}
				
				// charge la liste des paniers orphelins
				$this->amap->loadListeOrph($date, $panierAdOrph);	
		
				if($aboEstSouscrit){
					// si le panier de l'adhérent est orphelin alors l'indiquer et si on est pas en lecture seule, donner la possibilité d'annuler
					if($panierAdOrph){
						echo '<p>Vous avez déclarer votre panier <strong>orphelin</strong>.</p>';
						if(!$lectureSeule && !$this->amap->panierAdAdopte($date)){
							echo '<a class="amap_bouton" href="index.php?option=com_amap&amp;task=adOrphDecl&amp;distrib='.$date.'&amp;action=annule">Annuler la recherche d\'adoptant</a></p>';
						} else {
							echo 'Votre panier a été <strong>adopté</strong>.';
						}
					// sinon donner la possbilité de le déclarer orphelin
					} elseif($dateReport == NULL && !$lectureSeule && $this->amap->listeOrphAdopteAd == NULL){
						echo '<p>En cas d\'empêchement, vous pouvez déclarer votre panier <strong>orphelin</strong> pour tenter de trouver un repreneur.</p><a class="amap_bouton" href="index.php?option=com_amap&amp;task=adOrphDecl&amp;distrib='.$date.'&amp;action=declare">Déclarer mon panier orphelin</a>';
					}
					
					if($this->amap->listeOrphAdopteAd != NULL){
						echo '<p>Vous avez <strong>adopté</strong> un ou plusieurs panier(s), vous ne pouvez donc pas déclarer le votre <strong>orphelin</strong>.';
					}
					echo '</div>';

					// détermine si un report sortant est possible
					$reportSortant = $this->amap->listeDistributionsReport($date);

					// on ne peut pas reporter un panier orphelin
					if(!$panierAdOrph){
						if($reportSortant){
							// si on a pas déjà report le panier, proposer de le faire
							if($dateReport == NULL && !$lectureSeule){
									echo '<div class="amap_bloc">';
									echo '<h3 class="amap_titre">Reporter mon panier</h3>';
									$this->amap->formulaire = $this->amap->formulaireReport($date);
									$this->amap->formulaire->affiche();
									echo '</div>';
							} elseif($dateReport != NULL) {
								echo '<div class="amap_bloc">';
								echo '<h3 class="amap_titre">Reporter mon panier</h3>';
								echo '<p>Vous avez reporté votre panier au <strong>'.$dateReport.'</strong>.</p>';
								if(!$lectureSeule){
									echo '<a class="amap_bouton" href="index.php?option=com_amap&amp;task=adReport&amp;dateInitial='.$date.'">Annuler</a>';
								}
								echo '</div>';
							}
						} else { // on n'affiche rien plutôt qu'une erreur risquant de perturber
							// echo '<div class="amap_bloc">';
							// echo '<h3 class="amap_titre">Reporter mon panier</h3>';
							// echo "<p>Le <strong>report</strong> de panier n'est pas disponible à cette date.</p>";
							// echo '</div>';
						}
						
					}
				} else {
					echo '</div>';
				}			

				echo '<div class="amap_bloc">';
				echo '<h3 class="amap_titre">Paniers orphelins à adopter</h3>';		
				if($this->amap->listeOrphDistrib != NULL){
					// affiche la liste des paniers orphelin à adopter
					// si on est pas en lecture seule alors ajouter des boutons de commande
					if(!$lectureSeule){
						//l'adhérent ne doit pas avoir déclarer son panier orphelin s'il veut en adopter un
						if(!$panierAdOrph){
							$this->amap->listeOrphDistrib->commandes = array(
								0=>array('href'=>'index.php?option=com_amap&amp;task=adOrphRecup&amp;distrib='.$date,
										'icone'=>'adopter.png',
										'title'=>'Adopter ce panier',
										'param'=>array('ida'=>'IDA'))
								);
						}
					}
					$this->amap->listeOrphDistrib->afficheTable();
				} else {
					echo "Pas de paniers orphelins à adopter pour cette distribution";
				}
				echo '</div>';
	
				if($this->amap->listOrphAdopte != NULL){
					echo '<div class="amap_bloc">';
					echo '<h3 class="amap_titre">Paniers adoptés</h3>';		

					// affiche la liste des paniers orphelins adoptés
					$this->amap->listOrphAdopte->afficheTable();
					
					echo '</div>';
				}
				
				if($panierAdOrph){
					// affiche la liste des adoptants du panier de l'ahdérent
					if($this->amap->listeAdoptantPanierAd != NULL){
						echo '<div class="amap_bloc">';
						echo '<h3 class="amap_titre">Ceux qui ont adoptés mon panier</h3>';	
						$this->amap->listeAdoptantPanierAd->afficheTable();
						echo '</div>';
					}
				}

				if(!$panierAdOrph){
					// la liste des paniers orphelins adopté par l'adhérent avec bouton pour se rétracter si pas en lecture seule
					if($this->amap->listeOrphAdopteAd != NULL){
						echo '<div class="amap_bloc">';
						echo '<h3 class="amap_titre">Les paniers que j\'ai adoptés</h3>';	
						// si on est pas en lecture seule alors ajouter des boutons de commande
						if(!$lectureSeule){
							$this->amap->listeOrphAdopteAd->commandes = array(						
							0=>array('href'=>'index.php?option=com_amap&amp;task=adOrphAnnulRecup&amp;distrib='.$date,
									'icone'=>'annuler.png',
									'title'=>'Renoncer à ce panier',
									'param'=>array('ida'=>'IDA'))
							);
						}
						$this->amap->listeOrphAdopteAd->afficheTable();
						echo '</div>';
					}
				}
				
				$this->amap->loadEquipeDistrib($date);
				
				$ok = FALSE; // l'adhérent fait-il parti de l'équipe de distribution ? par défaut on suppose que non
				
				// si il y a des inscrits participant  à la distribution alors afficher la liste
				if($this->amap->listeEquipeDistrib != NULL){
					echo '<div class="amap_bloc">';
					echo '<h3 class="amap_titre">L\'équipe de distribution</h3>';
					$this->amap->listeEquipeDistrib->afficheTable();
					echo '</div>';

					$ida = $mainframe->getUserState('amap_ida', 0);	
				
					// vérifie que l'adhérent fait parti de la liste de distribution
					foreach($this->amap->listeEquipeDistrib->table as $valeur){
						if($ida == $valeur['IDA']){
							$ok = TRUE;
						}
					}
				}
				
				// les rapports s'obtiennent soit en faisant parti de l'équipe de distribution, soit en ayant les droits d'abonnements
				// Modif : 20091026 : Les équipes de distribution n'étant pas encore traitées en ligne, la liste de distribution est accessible à tous ... 
				// if($mainframe->getUserState("amap_droitAbo", FALSE) || $ok){
					echo '<div class="amap_bloc">';
					echo '<h3 class="amap_titre">Liste de distribution à imprimer</h3>';
					echo '<p>Ce document liste tous les paniers à distribuer</p>';
					echo '<a class="amap_bouton" href="index.php?option=com_amap&amp;task=exportListeDistrib&amp;distrib='.$date.'&amp;type=html">Impression depuis le navigateur</a>';
					echo '<a class="amap_bouton" href="index.php?option=com_amap&amp;task=exportListeDistrib&amp;distrib='.$date.'&amp;type=xls">Obtenir la liste pour Excel</a>';
					echo '</div>';
				//}
				
								
				// permet la saisie d'un compte rendu de distribution si l'adhérent est le chef d'équipe
				if($statut == "Chef d'équipe"){
					echo '<div class="amap_bloc">';
					echo '<h3 class="amap_titre">Compte rendu de la distribution</h3>';
					echo 'En tant que responsable de l\'équipe de distribution, vous pouvez utiliser le formulaire ci-dessous pour faire un compte rendu du déroulement de la distribution.';
					$this->amap->formulaire = $this->amap->formulaireCompteRendu($date);
					$this->amap->formulaire->affiche();
					echo '</div>';					
				}
				
				echo '<p class="amap_legend"><img src="components/com_amap/images/aide.png" style="position:relative;top:6px;margin-right:4px;" />Besoin d\'aide ?</p>';
				echo '<div id="amap_footer">';
				echo "
				Cet écran vous présente les informations relatives à la distribution mentionnée en titre. 
				La rubrique <b>Votre statut</b> vous permet de savoir ou vous en êtes. Elle vous permet aussi de déclarer votre panier comme orphelin (chercher à le revendre) ou d’adopter (acheter) un panier orphelin.<br/>
				Pour déclarer un panier orphelin, cliquez sur le bouton correspondant : aussitôt, cela apparaît sur la liste de distribution et sur la présente page. 
				Les autres Amapiens en sont informés. <br/> 
				Cliquez le plus tôt possible et, au plus tard, la veille de la distribution concernée. Une fois votre panier adopté par un Amapien, il disparaît de la liste et vous connaitrez le nom de l'adoptant.<br/>
				Pour racheter un panier abandonné, un tableau vous présente tous les paniers orphelin, il vous suffit d'en choisir un et de l'adopter<br/>
				Les équipes de distributions ne sont pas encore gérée automatiquement. Les informations et commande se rapportant à cette fonction ne sont donc pas à utiliser. 
				";
				echo '</div>';

			}
		}
		parent::display($tpl);
	}
}
?>
